#ifndef functionsH
#define functionsH

#include <string>
#include <map>
#include <stdexcept>

#include "big_int.h"

using std::string;
using std::map;

struct functions
{
	functions();
	functions(const string&, big_int(*f_)(big_int));
	string get_name() const ;
	big_int operator()(big_int) const;
private:
	string name;
	big_int(*f)(big_int);
};

map<string, functions>& get_functions();

#endif
